iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0

開始前的各項調整

開啟專案

當我們Fabric下載好之後,將壓縮檔在想要的位置解壓縮,解壓縮之後的內容物差不多長這樣
https://ithelp.ithome.com.tw/upload/images/20240831/20161797AlE96eOqEl.png
開啟我們剛剛安裝好的IntelliJ,使用 Open File開啟我們的Fabric資料夾。
https://ithelp.ithome.com.tw/upload/images/20240831/20161797QaqOedQcEg.png
開啟檔案後會看到類似這樣的內容。
https://ithelp.ithome.com.tw/upload/images/20240831/20161797p9DBr17jkY.png
這張截圖是在我已經開始這份專案後一段時間才截的,全新的專案應該會有一個Mixin資料夾,一個XXMod class跟一個XXModDataGenerator class。
我的專案名稱是The Classic of Mountains and Oceans(山海經),我想要在Minecraft中加入一些中國神話的相關內容。

接下來我們需要先確認之前下載的Java 17有在正確使用,點選左上方的File,再點選Project Structure
https://ithelp.ithome.com.tw/upload/images/20240831/20161797rMwirlehlh.png
我們可以看到Project Setting中的Project裡有一個選項SDK,請確認已經是你下載的Java 17,且下方的Language Level也是17。

調整專案內容

我們點開XXMod的class之後,我們會看到很多註解,註解的內容是在告訴你一些方法的用法及內容,這部份看完就可以刪了,我們用不到。
接下來我們需要一個字串來接我們的Mod ID

public static final String MOD_ID = "como";

como是我的Mod ID,像這樣我們之後就可以直接叫MOD_ID。
下面就有一個地方可以替換成我們的MOD_ID

public static final Logger LOGGER = LoggerFactory.getLogger("XXX");

我們可以不需要再重複寫我們的ID名稱,直接將XXX替換成MOD_ID就好。

public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);

接下來我們要改class的名稱,我們對class名稱shift + F6就可以將所有使用到這個class名稱的地方一起更改。
https://ithelp.ithome.com.tw/upload/images/20240831/201617979ohopBz0RR.png
同時也要將xxModDataGenerator也改成[你的專案名稱]DataGenerator。

https://ithelp.ithome.com.tw/upload/images/20240831/201617972HUdKls8rc.png
接著在下方resources資料夾中有fabric.mod.json,打開來長這樣
https://ithelp.ithome.com.tw/upload/images/20240831/20161797ge4QqUcvLu.png
在這裡你可以看到自己的ModID跟ModName,同時這裡有幾點是你需要改的
第一是介紹"description"跟作者"authors",這裡你可以隨你喜好改,Lisense代表你的授權條款,我使用的是MIT授權,代表這個專案使用MIT的授權條款。
下一個是icon,代表你在遊戲中看到的Mod icon,這裡使用的是他預設好的icon,如果想要換成自己的icon,要記得在這裡改相對路徑。
接下來entrypoints就一定要改了,因為目前這裡可以看到是原先預設的檔案名稱,請將名稱改成你的。

"main": [
			"net.como.TheClassicofMountainsandOceans"
		]
"fabric-datagen": [
			"net.como.TheClassicofMountainsandOceansDataGenerator"
		]

在entrypoints中我們還需要加一個東西,那就是[名稱]+client,這在之後的製作物品3D模型中會用到

	"entrypoints": {
		"main": [
			"net.como.TheClassicofMountainsandOceans"
		],
		"client": [
			"net.como.TheClassicofMountainsandOceansClient"
		],
		"fabric-datagen": [
			"net.como.TheClassicofMountainsandOceansDataGenerator"
		]
	}

在JSON檔中加入Client之後還要在專案資料夾下同時加入Client的classhttps://ithelp.ithome.com.tw/upload/images/20240831/20161797Kd21G7tdRJ.png

然後我們還要implements ClientModInitializer

public class TheClassicofMountainsandOceansClient implements ClientModInitializer 

我們會看到這段程式上跳出紅色警告,滑鼠移到上面會看到有Implement Methods,點下去按OK,就會自動Override onInitializeClient方法了。

Gradle

接下來這個步驟可以讓我們看到一些Minecraft的原始碼
讓我們在IntelliJ左下方打開Terminal,輸入

./gradlew genSources

.gradlew genSources 是使用 Gradle 工具生成原始碼的命令
下載完成後我們可以到Mixin中的ExampleMixin
https://ithelp.ithome.com.tw/upload/images/20240901/20161797ozltlANfSY.png

@Mixin(MinecraftServer.class)

對MinecraftServer點中鍵,就會跳到原始碼
https://ithelp.ithome.com.tw/upload/images/20240901/20161797RFKPOrJWnF.png
這裡你看到的就是原始碼了,可以看到一些註解,在這裡你可能會看到上方有藍色的一條,這代表有一些Source Code沒有正確下載,點Choose Source,選擇尾部有Source.jar,就可以解決這個問題了

到這邊完成之後,明天就可以進入到開啟遊戲的部分了


上一篇
Minecraft Fabric Mod 模組製作 DAY1
下一篇
Minecraft Fabric Mod 模組製作 DAY3
系列文
Minecraft JAVA Fabric 模組製作 : 成為真正的創世神28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言